perm filename UPDATE.SAI[11,ALS] blob
sn#118988 filedate 1974-09-11 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "UPDATE"
C00004 00003 STDBRK(1)
C00010 ENDMK
C⊗;
BEGIN "UPDATE"
DEFINE ⊂="COMMENT"; ⊂ 8/28/73 Inserts corrected headers in NEWPH format;
DEFINE ⊃="⊂"; ⊂ Change this symbol to mean "" to get running commentary;
⊂ When data file is specified as XXX.YYY the program expects to find
header information on XXX.HRX and it writes out the corrected file;;
⊂ Program CONVER.SAI is used to convert OLDPH files to the NEWPH format
and to prepare a list of the header for manual corrections which is
called XXX.HDR;
REQUIRE "BLOCKS.HDR[4,ALS]" SOURCE_FILE;
INTEGER ARRAY LFILE[0:'177];
INTERNAL INTEGER ARRAY INDATA[0:255];
INTEGER ARRAY SYMBOL,SAMPLE[0:127];
INTERNAL INTEGER H,I,J,K,L,M,N,P,NF;
INTERNAL INTEGER SEGTOT,RL,EOF,EOFA,BRK;
INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5,CHAN6,CHANX;
STRING READ1,READ2,READ3,FILEL,FILEI,TFILE,TFILEI,FILLST,PREHINT;
INTEGER ARRAY OLDPH,NEWPH[0:63];
BOOLEAN ER;
STDBRK(1);
SETBREAK(14,"∃",NULL,"INS");
SETBREAK(15,'11&'12&'14&'15&'40,NULL,"INS");
SETBREAK(16,'56,NULL,"INA");
SETBREAK(17,'15,'12,"INS");
CHAN1←1; CHAN2←2; CHAN3←3; CHAN4←4; CHAN5←5; CHAN6←6;
OUTSTR("This program is used to replace the HINT information in the "&CRLF&
"header of a file specified by the user. It expects a header "&CRLF&
"correction file of the same name but with the extention of HDX "&CRLF&
"and it overwrites Tthe input file."&CRLF);
OUTSTR(" Replace ''⊂'' by '''' in line 30/1 for on-line data."&CRLF&LF);
CLOSE(CHAN4); OPEN(CHAN4,"DSK",1,2,0,3500,BRK,EOFA);
LOOKUP(CHAN4,"MAP.PHN",ER);
WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find MAP.PHN. File = ");
LOOKUP(CHAN4,TFILE←INCHWL,ER); END; EOFA←0;
FILLST←INPUT(CHAN4,14);
⊂ OUTSTR("MAP.PHN contains "&CRLF&FILLST&CRLF);
CLOSE(CHAN4);
FOR I←0 STEP 1 UNTIL 127 DO BEGIN
WHILE TRUE DO BEGIN
READ1←SCAN(FILLST,17,K);
READ3←READ1[1 TO 1];
IF READ3≠"⊂" THEN DONE; END;
IF READ3="" THEN DONE;
SYMBOL[I]←CVASC(SCAN(READ1,15,K));
SAMPLE[I]←CVASC(SCAN(READ1,15,K));
⊂ OUTSTR(CVOS(SYMBOL[I])&TB&CVOS(SAMPLE[I])&CRLF);
END;
WHILE TRUE DO BEGIN "LISTREAD"
FILEI←STRIN("Data file to be corrected (type name or CR to terminate) ");
IF FILEI="" THEN DONE;
CLOSE(CHAN1); OPEN(CHAN1,"DSK",'10,10,0,0,0,EOF);
LOOKUP(CHAN1,FILEI,ER);
WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEI&" File = ");
LOOKUP(CHAN1,FILEI←INCHWL,ER); END; EOFA←0;
ARRYIN(CHAN1,LFILE[0],'200); ⊂ Input header;
SEGTOT←(LFILE[0]*6)%256;
⊃ OUTSTR(FILEI&" "&CVS(SEGTOT)&" ");
⊂ FOR I←0 STEP 1 UNTIL 127 DO OUTSTR(CVOS(LFILE[I])&TB);
READ2←FILEI; FILEL←SCAN(READ2,16,J)&"HDX";
CLOSE(CHAN4); OPEN(CHAN4,"DSK",1,2,0,3500,BRK,EOFA);
LOOKUP(CHAN4,FILEL,ER);
WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEL&". File = ");
LOOKUP(CHAN4,FILEL←INCHWL,ER); END; EOFA←0;
FILLST←INPUT(CHAN4,14);
⊃ OUTSTR("FILLST contains "&CRLF&FILLST&CRLF);
CLOSE(CHAN4);
J←21; ⊃ OUTSTR(CRLF&"Starting FOR I←0 "&CRLF);
FOR J←21 STEP 1 UNTIL 127 DO BEGIN
WHILE TRUE DO BEGIN
READ1←SCAN(FILLST,17,K);
READ3←READ1[1 TO 1];
IF READ3≠"⊂" THEN DONE; END;
IF READ1="" THEN DONE;
⊃ OUTSTR("Read1 contains "&READ1&TB);
LFILE[J]←CVASC(SCAN(READ1,15,K));
⊂ OUTSTR(CVOS(LFILE[J])&TB&TB);
FOR M←0 STEP 1 UNTIL 126 DO BEGIN
⊂ OUTSTR(CVOS(SYMBOL[M])&TB);
IF LFILE[J]=SYMBOL[M] THEN DONE; END;
OUTSTR(CVSTR(LFILE[J])); OUTSTR(TB);
L←CVD(SCAN(READ1,15,K)); DPB(L,POINT(14,LFILE[J],27));
OUTSTR(CVS(L)&TB);
L←CVD(SCAN(READ1,15,K)); DPB(L,POINT(8,LFILE[J],35));
OUTSTR(CVS(L)&TB);
OUTSTR(CVSTR(SAMPLE[M])); OUTSTR(CRLF);
⊃ OUTSTR(CVOS(LFILE[J])&CRLF);
END;
FOR J←J STEP 1 UNTIL 127 DO LFILE[J]←0;
⊃ OUTSTR("eady to write "&FILEI&TB);
OPEN(CHAN4,"DSK",'10,0,10,0,0,EOF);
ENTER(CHAN4,FILEI,0);
ARRYOUT(CHAN4,LFILE[0],'200);
WHILE EOF=0 DO BEGIN
FOR I←0 STEP 1 UNTIL 255 DO INDATA[I]←0;
ARRYIN(CHAN1,INDATA[0],256); J←0;
FOR I←0 STEP 1 UNTIL 255 DO J←J+INDATA[I]; IF J=0 THEN DONE;
ARRYOUT(CHAN4,INDATA[0],256); END; CLOSE(CHAN1); CLOSE(CHAN4);
OUTSTR(CRLF&"File "&FILEI&" has been written with corrections."&CRLF&LF);
END "LISTREAD";
RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3); RELEASE(CHAN4);
END "UPDATE";